package com.agenda;

import java.io.IOException;
import java.net.Socket;
import com.agenda.model.RequisicaoEnum;
import com.agenda.server.Servidor;
import com.agenda.server.listeners.ClienteAdicionadoListener;
import com.agenda.server.recebedores.AtualizarStatusCliente;
import com.agenda.server.recebedores.CadastrarUsuarioRecebedor;
import com.agenda.server.recebedores.CriarSalaChatRecebedor;
import com.agenda.server.recebedores.FazerDownloadAnexoRecebedor;
import com.agenda.server.recebedores.LiberarEmoticomRecebedor;
import com.agenda.server.recebedores.LoginRecebedor;
import com.agenda.server.recebedores.ReceberCompromissoRecebedor;
import com.agenda.server.recebedores.ReceberConfirmacaoRecusaCompromissoRecebedor;
import com.agenda.server.recebedores.RequisitarEmoticomRecebedor;
import com.agenda.server.recebedores.RetornarUsuariosRecebedor;
import com.agenda.server.recebedores.SolicitarVideoRecebedor;
import com.agenda.server.recebedores.VerificarChoquesCompromissoRecebedor;
import com.agenda.server.recebedores.VerificarStatusRecebedor;

public class PrincipalServidor {

	public static void main(String[] args) throws IOException {

		Servidor.registrarRecebedor(RequisicaoEnum.LOGIN, new LoginRecebedor());
		Servidor.registrarRecebedor(RequisicaoEnum.CADASTRAR_USUARIO, new CadastrarUsuarioRecebedor());
		Servidor.registrarRecebedor(RequisicaoEnum.VERIFICAR_STATUS, new VerificarStatusRecebedor());
		Servidor.registrarRecebedor(RequisicaoEnum.MUDAR_STATUS, new AtualizarStatusCliente());
		Servidor.registrarRecebedor(RequisicaoEnum.ENVIAR_COMPROMISSO, new ReceberCompromissoRecebedor());

		Servidor.registrarRecebedor(RequisicaoEnum.BUSCAR_USUARIOS, new RetornarUsuariosRecebedor());
		Servidor.registrarRecebedor(RequisicaoEnum.CONFIRMAR_RECUSAR_COMPROMISSO, new ReceberConfirmacaoRecusaCompromissoRecebedor());
		Servidor.registrarRecebedor(RequisicaoEnum.VERIFICAR_CHOQUE, new VerificarChoquesCompromissoRecebedor());

		Servidor.registrarRecebedor(RequisicaoEnum.DOWNLOAD_ANEXO, new FazerDownloadAnexoRecebedor());
		Servidor.registrarRecebedor(RequisicaoEnum.CHAT, new CriarSalaChatRecebedor());

		Servidor.registrarRecebedor(RequisicaoEnum.EMOTICOM, new RequisitarEmoticomRecebedor());
		Servidor.registrarRecebedor(RequisicaoEnum.LIBERAR_EMOTICOM, new LiberarEmoticomRecebedor());

		Servidor.registrarRecebedor(RequisicaoEnum.VIDEO, new SolicitarVideoRecebedor());

		Servidor server = Servidor.getInstancia();
		server.setPorta(7000);
		server.setClienteAdicionadoListener(new ClienteAdicionadoListener() {
			@Override
			public void adicionou(Socket sck) {
				System.out.println(sck);
			}
		});

		server.criarServidor();
		server.aguardarConexoes();
	}
}
